df <- read.csv("X://XXXXXXXXX//4.3-实操数据.csv")    #读取csv数据并赋值给变量df【路径自行修改，记得使用//】

#for循环
df1 <- df #把df赋值给df1，用于本节计算，不和其他算法相互影响
df1
for (i in c(1:length(df1$Num))) {
  if (df1$IV[i] >= 30) {
    df1$rank[i] <- "优势种"
  } else if (df1$IV[i] >= 20) {
    df1$rank[i] <- "亚优势种"
  } else if (df1$IV[i] >= 10) {
    df1$rank[i] <- "伴生种"
  } else {
    df1$rank[i] <- "偶见种"
  }
}
df1

#while循环
df2 <- df #把df赋值给df2，用于本节计算，不和其他算法相互影响
df2
j <- 1    #这里的循环变量改用j，以区分for中的i，实际任何变量均可
while(!is.na(df2$Num[j])) {
  if (df2$IV[j] >= 30) {
    df2$rank[j] <- "优势种"
  } else if (df2$IV[j] >= 20) {
    df2$rank[j] <- "亚优势种"
  } else if (df2$IV[j] >= 10) {
    df2$rank[j] <- "伴生种"
  } else {
    df2$rank[j] <- "偶见种"
  }
  j <- j+1
}
df2

#不使用循环（不符合题意）,使用向量化操作，更简单
df3 <- df #把df赋值给df3，用于本节计算，不和其他算法相互影响
df3

df3$rank <- ifelse(df3$IV >= 30, "优势种", 
                   ifelse(df3$IV >= 20, "亚优势种", 
                          ifelse(df3$IV >= 10, "伴生种", "偶见种")
                          )
                   )

df3
